package com.hu.system.service.impl;

import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.ArrayList;
import java.util.List;

import com.github.pagehelper.PageHelper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.hu.common.utils.SecurityUtils;
import com.hu.system.mapper.ProductAnalysisMapper;
import com.hu.system.mapper.SysUserShopMapper;
import com.hu.system.domain.ProductAnalysis;
import com.hu.system.service.IProductAnalysisService;

/**
 * 产品分析Service业务层处理
 *
 * @author hu
 * @date 2025-01-22
 */
@Service
public class ProductAnalysisServiceImpl implements IProductAnalysisService {
    @Autowired
    private ProductAnalysisMapper productAnalysisMapper;

    @Autowired
    private SysUserShopMapper userShopMapper;

    /**
     * 查询产品分析列表
     *
     * @param productAnalysis 产品分析
     * @return 产品分析集合
     */
    @Override
    public List<ProductAnalysis> selectProductAnalysisList(ProductAnalysis productAnalysis) {
        Long userId = SecurityUtils.getUserId();

        // 管理员查看全部
        if (userId == null || !SecurityUtils.isAdmin(userId)) {
            // 普通用户根据店铺过滤
            // 保存分页参数（因为查询店铺ID会消耗分页参数）
            com.github.pagehelper.Page<?> page = PageHelper.getLocalPage();
            // 清除分页参数，让店铺ID查询不使用分页
            PageHelper.clearPage();
            List<Long> shopIds = userShopMapper.selectShopIdsByUserId(userId);
            // 恢复分页参数，让主查询使用分页
            if (page != null) {
                PageHelper.startPage(page.getPageNum(), page.getPageSize(), page.getOrderBy());
            }
            if (shopIds == null || shopIds.isEmpty()) {
                return new ArrayList<>();
            }

            // 设置店铺ID过滤条件
            productAnalysis.getParams().put("shopIdList", shopIds);
        }

        // 查询数据（所有计算已在SQL中完成）
        List<ProductAnalysis> list = productAnalysisMapper.selectProductAnalysisList(productAnalysis);

        return list;
    }
}

